<?php
/**
 +------------------------------------------------------------------------------
 * mysql类 驱动 老的mysql链接
 +------------------------------------------------------------------------------
 * @version   1.0
 * @author    WangXian
 * @filename ./mysql.class.php
 * @creation date 2010-8-12
 +------------------------------------------------------------------------------
 */
class db
{
	public $sql = '';
	private $_conn;

	function __construct($db_config='default')
	{
		#获取当前数据库配制
		if(false == ( $iconfig = C($db_config, 'db') ) )
		{
			throw new ephpException('数据库配制db.config.php中'.$db_config.'没有配置。', 622);
		}
		
		$this->_conn = mysql_connect( $iconfig['host'], $iconfig['user'], $iconfig['password'] );
		if(empty($this->_conn))
		{
			throw new ephpException('Can not connect to your MySQL Server. Then exit',1623);
		}

		//打开数据库
		if (! mysql_select_db($iconfig->dbname, $this->_conn))
		{
			throw new ephpException(mysql_error($this->_conn));
		}
		$this->query("set names utf8");

	}

	/**
	 * 执行mysql query操作
	 * @param String $sql
	 */
	public function query($sql)
	{
		$this->sql = $sql;
		
		#获取main配制文件，一次获取all config减少C()调用次数
		$main_config = C();
		// 是否记录 SQL log
		if( true == $main_config['sql_log'] )
			wlog('SQL-Log-'.date('Y-m-d').'.log', '['. date('H:i:s') .']'.$sql);

		if(true == ($rs = mysql_query($sql, $this->_conn)) )
		{
			#统计数据库查询次数
			if( true == $main_config['show_runinfo'] )
			{
				global $run_dbquery_count;
				$run_dbquery_count++; #数据库查询次数
			}
			return $rs;
		}
		else
		{
			throw new ephpException('执行mysql::query()出现错误：'.mysql_error($this->_conn).'<br />SQL：'.$sql, 2008);
		}
	}
	/**
	 * 最后执行插入的id
	 */
	public function insert_id()
	{
		return mysql_insert_id($this->_conn);
	}
	/**
	 * 影响的数据总行数
	 */
	public function affected_rows()
	{
		return mysql_affected_rows($this->_conn);
	}
	/**
	 * 用于查询只有返回一条数据 情况
	 * @param String $sql
	 */
	public function fetch_array($sql)
	{
		$this->sql = $sql;
		$result = $this->query($sql);
		return mysql_fetch_assoc($result);
	}
	/**
	 * 以array的方式返回查询到的数据
	 * @param string $sql
	 */
	public function fetch_arrays($sql)
	{
		$this->sql = $sql;

		$result = $this->query($sql);
		if ($result)
		{
			$array = '';
			while(true == ($row = mysql_fetch_assoc($result)) )
			{
				$array[] = $row;
			}
			mysql_free_result($result);
			return $array;
		}
		return false;
	}
	/**
	 * 以对象的方式返回数据
	 * @param string $sql
	 */
	public function fetch_object($sql)
	{
		$this->sql = $sql;

		$result = $this->query($sql);
		return mysql_fetch_object($result);
	}
	/**
	 * 以对象的方式返回多条数据
	 * @param string $sql
	 */
	public function fetch_objects($sql)
	{
		$this->sql = $sql;

		$result = $this->query($sql);
		if ($result)
		{
			$array = '';
			while(true == ($row = mysql_fetch_object($result)) )
			{
				$array[] = $row;
			}
			mysql_free_result($result);
			return $array;
		}
		return false;
	}
	/**
	 * 获取错误代码
	 */
	public function get_errno()
	{
		return mysql_errno($this->_conn);
	}
	/**
	 * 获取错误信息
	 */
	public function get_error()
	{
		return mysql_error($this->_conn);
	}
	/**
	 * 最后执行的sql语句
	 */
	public function getLastSql()
	{
		return $this->sql;
	}
}